package com.ncu.spring.anno;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;


//Target注解决定Autowired注解可以加在哪些成分上，如加在类身上，或者属性身上，或者方法身上等成分
//这里表示只能加在方法和属性上方
@Target({ElementType.FIELD, ElementType.METHOD})
//在注解类上使用另一个注解类，那么被使用的注解类就称为元注解
//Retention注解括号中的"RetentionPolicy.RUNTIME"意思是让MyAnnotation这个注解的生命周期一直程序运行时都存在
/*
    Retention注解括号中 还可以填写其他枚举：
        @Retention(RetentionPolicy.SOURCE)
            这个注解的意思是让Autowired注解只在java源文件中存在，编译成.class文件后注解就不存在了
        @Retention(RetentionPolicy.CLASS)
            这个注解的意思是让Autowired注解在java源文件(.java文件)中存在，编译成.class文件后注解也还存在，
            被Autowired注解类标识的类被类加载器加载到内存中后Autowired注解就不存在了
*/
@Retention(RetentionPolicy.RUNTIME)
public @interface Autowired {
}
